import { useEffect, useRef, useState } from "react";

/**
 * 倒计时工具
 * @param initCount 倒计时时长，默认是10s，
 * @param startCallBack 开始执行的回调函数，
 * @param endCallBack 结束时执行的函数
 */
export default function useCountDown(
    initCount = 10,
    startCallBack = () => { },
    endCallBack = () => { }
) {
    //初始化定时器id
    const timeId = useRef(null)
    //初始化倒计时
    const [count, setCount] = useState(initCount)
    //初始化是否禁用
    const [isDisabled, setIsDisabled] = useState(false)

    //开始,执行该函数之后会开启倒计时
    const start = () => {
        console.log("start count down")
        // setCount(initCount);
        setIsDisabled(true);
        // timeId.current = setInterval(() => {
        //     setCount((tck) => tck - 1);
        // }, 1000);
    }

    //首先清除定时器
    useEffect(() => clearInterval(timeId.current), [])

    //判断是否需要清除
    useEffect(() => {
        // if (count !== initCount) {
        //     startCallBack();
        // }
        // if (count === 0) {
            // clearInterval(timeId.current);
            // setCount(initCount);
            // setIsDisabled(false);
            // endCallBack();
        // }
    }, [startCallBack, count, initCount, endCallBack])
    // useEffect(() => {
    //     if (count !== initCount || isDisabled) {
    //         startCallBack();
    //     }
    //     if (count === 0) {
    //         clearInterval(timeId.current);
    //         // setCount(initCount);
    //         // setIsDisabled(false);
    //         endCallBack();
    //     }
    // }, [startCallBack, count, initCount, endCallBack, isDisabled])

    //对外暴露三个属性，开始执行函数，当前倒计时时间，是否禁用
    return { start, count, isDisabled };
}